"""
实现单链表的节点定义、链表创建函数和遍历函数。
"""

# 定义单链表节点类
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val  # 节点存储的值
        self.next = next  # 指向下一个节点的指针


# 根据列表创建单链表
def create_linked_list(arr):
    if not arr:  # 如果输入列表为空，返回空链表
        return None

    # 创建头节点
    head = ListNode(arr[0])
    current = head  # 当前节点指针，初始指向头节点

    # 遍历列表剩余元素，创建节点并链接
    for val in arr[1:]:
        current.next = ListNode(val)  # 为当前节点添加下一个节点
        current = current.next  # 移动当前节点指针到下一个节点

    return head  # 返回头节点


# 遍历单链表并返回元素列表
def traverse_linked_list(head):
    result = []
    current = head  # 从头部开始遍历

    # 当当前节点不为空时，继续遍历
    while current:
        result.append(current.val)  # 将当前节点的值加入结果列表
        current = current.next  # 移动到下一个节点

    return result  # 返回遍历结果


# 测试
arr = [1, 2, 3, 4, 5]
head = create_linked_list(arr)
print(traverse_linked_list(head))  # 输出: [1, 2, 3, 4, 5]
